A cloud environment, in its most general form, is like a market place. A distributed application owned by a single user can share different resources owned by different service providers, which are assigned to the user by the cloud middleware based on the application needs. A cloud application can utilize different resources at different architectural layers such as the hardware layer, the virtualization layer, and the application layer. As used in this document, a resource can be any shareable computing entity. A resource can be primitive or composite, where composite resources are built on other primitive or composite resources. For example, a virtual machine is a composite resource that is built up of CPUs, RAM, virtual disks, etc.
Cloud users are being charged back for their resource usage based on flat rate time plans. The market competition influences the need for an accurate metering standard, such that users can be charged accurately for their usage. A cloud resource is being shared between different applications through multiplexing, and consequently the proposed framework should be capable of correlating an application's resource usage, and providing different metering granularity levels.